import UIKit

@available(iOS 2.0, *)
extension QKC where AA :UIResponder {
    open func next_qk_g() -> QKC<AA,YY,ZZ, UIResponder? >{
		 self +^ self.value.next
	}

		// default is NO
    open func canBecomeFirstResponder_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.canBecomeFirstResponder
	}

		// default is YES
    open func canResignFirstResponder_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.canResignFirstResponder
	}

    open func isFirstResponder_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isFirstResponder
	}

    @available(iOS 3.0, *)
    open func undoManager_qk_g() -> QKC<AA,YY,ZZ, UndoManager? >{
		 self +^ self.value.undoManager
	}

	// Productivity editing interaction support for undo/redo/cut/copy/paste gestures
    @available(iOS 13.0, *)
    open func editingInteractionConfiguration_qk_g() -> QKC<AA,YY,ZZ, UIEditingInteractionConfiguration >{
		 self +^ self.value.editingInteractionConfiguration
	}

    open func becomeFirstResponder_qk_f() -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.becomeFirstResponder()
	}

    open func resignFirstResponder_qk_f() -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.resignFirstResponder()
	}

	// do so is very likely to lead to incorrect behavior or crashes.
    open func touchesBegan_qk_f(_ touches: Set<UITouch>, with event: UIEvent?) -> QKC<AA,YY,ZZ, Set<UITouch>>{
		 self +^ self.value.touchesBegan(touches, with:event) +^ touches
	}

    open func touchesMoved_qk_f(_ touches: Set<UITouch>, with event: UIEvent?) -> QKC<AA,YY,ZZ, Set<UITouch>>{
		 self +^ self.value.touchesMoved(touches, with:event) +^ touches
	}

    open func touchesEnded_qk_f(_ touches: Set<UITouch>, with event: UIEvent?) -> QKC<AA,YY,ZZ, Set<UITouch>>{
		 self +^ self.value.touchesEnded(touches, with:event) +^ touches
	}

    open func touchesCancelled_qk_f(_ touches: Set<UITouch>, with event: UIEvent?) -> QKC<AA,YY,ZZ, Set<UITouch>>{
		 self +^ self.value.touchesCancelled(touches, with:event) +^ touches
	}

    @available(iOS 9.1, *)
    open func touchesEstimatedPropertiesUpdated_qk_f(_ touches: Set<UITouch>) -> QKC<AA,YY,ZZ, Set<UITouch>>{
		 self +^ self.value.touchesEstimatedPropertiesUpdated(touches) +^ touches
	}

	// do so is very likely to lead to incorrect behavior or crashes.
    @available(iOS 9.0, *)
    open func pressesBegan_qk_f(_ presses: Set<UIPress>, with event: UIPressesEvent?) -> QKC<AA,YY,ZZ, Set<UIPress>>{
		 self +^ self.value.pressesBegan(presses, with:event) +^ presses
	}

    @available(iOS 9.0, *)
    open func pressesChanged_qk_f(_ presses: Set<UIPress>, with event: UIPressesEvent?) -> QKC<AA,YY,ZZ, Set<UIPress>>{
		 self +^ self.value.pressesChanged(presses, with:event) +^ presses
	}

    @available(iOS 9.0, *)
    open func pressesEnded_qk_f(_ presses: Set<UIPress>, with event: UIPressesEvent?) -> QKC<AA,YY,ZZ, Set<UIPress>>{
		 self +^ self.value.pressesEnded(presses, with:event) +^ presses
	}

    @available(iOS 9.0, *)
    open func pressesCancelled_qk_f(_ presses: Set<UIPress>, with event: UIPressesEvent?) -> QKC<AA,YY,ZZ, Set<UIPress>>{
		 self +^ self.value.pressesCancelled(presses, with:event) +^ presses
	}

    @available(iOS 3.0, *)
    open func motionBegan_qk_f(_ motion: UIEvent.EventSubtype, with event: UIEvent?) -> QKC<AA,YY,ZZ, UIEvent.EventSubtype>{
		 self +^ self.value.motionBegan(motion, with:event) +^ motion
	}

    @available(iOS 3.0, *)
    open func motionEnded_qk_f(_ motion: UIEvent.EventSubtype, with event: UIEvent?) -> QKC<AA,YY,ZZ, UIEvent.EventSubtype>{
		 self +^ self.value.motionEnded(motion, with:event) +^ motion
	}

    @available(iOS 3.0, *)
    open func motionCancelled_qk_f(_ motion: UIEvent.EventSubtype, with event: UIEvent?) -> QKC<AA,YY,ZZ, UIEvent.EventSubtype>{
		 self +^ self.value.motionCancelled(motion, with:event) +^ motion
	}

    @available(iOS 4.0, *)
    open func remoteControlReceived_qk_f(with event: UIEvent?) -> QKC<AA,YY,ZZ, UIEvent?>{
		 self +^ self.value.remoteControlReceived(with:event) +^ event
	}

    @available(iOS 3.0, *)
    open func canPerformAction_qk_f(_ action: Selector, withSender sender: Any?) -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.canPerformAction(action, withSender:sender)
	}

	// Allows an action to be forwarded to another target. By default checks -canPerformAction:withSender: to either return self, or go up the responder chain.
    @available(iOS 7.0, *)
    open func target_qk_f(forAction action: Selector, withSender sender: Any?) -> QKC<AA,YY,ZZ,Any?>{
		 self +^ self.value.target(forAction:action, withSender:sender)
	}

	// Overrides for menu building and validation
    @available(iOS 13.0, *)
    open func buildMenu_qk_f(with builder: UIMenuBuilder) -> QKC<AA,YY,ZZ, UIMenuBuilder>{
		 self +^ self.value.buildMenu(with:builder) +^ builder
	}

    @available(iOS 13.0, *)
    open func validate_qk_f(_ command: UICommand) -> QKC<AA,YY,ZZ, UICommand>{
		 self +^ self.value.validate(command) +^ command
	}

}

extension QKC where AA :UIResponder {
		// returns an array of UIKeyCommand objects<
    @available(iOS 7.0, *)
    open func keyCommands_qk_g() -> QKC<AA,YY,ZZ, [UIKeyCommand]? >{
		 self +^ self.value.keyCommands
	}

}

extension QKC where AA :UIResponder {
	// Called and presented when object becomes first responder.  Goes up the responder chain.
    @available(iOS 3.2, *)
    open func inputView_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.inputView
	}

    @available(iOS 3.2, *)
    open func inputAccessoryView_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.inputAccessoryView
	}

	/// This method should not be overridden. Goes up the responder chain.
    @available(iOS 9.0, *)
    open func inputAssistantItem_qk_g() -> QKC<AA,YY,ZZ, UITextInputAssistantItem >{
		 self +^ self.value.inputAssistantItem
	}

	// Called and presented when object becomes first responder.  Goes up the responder chain.
    @available(iOS 8.0, *)
    open func inputViewController_qk_g() -> QKC<AA,YY,ZZ, UIInputViewController? >{
		 self +^ self.value.inputViewController
	}

    @available(iOS 8.0, *)
    open func inputAccessoryViewController_qk_g() -> QKC<AA,YY,ZZ, UIInputViewController? >{
		 self +^ self.value.inputAccessoryViewController
	}

    @available(iOS 7.0, *)
    open func textInputMode_qk_g() -> QKC<AA,YY,ZZ, UITextInputMode? >{
		 self +^ self.value.textInputMode
	}

    @available(iOS 7.0, *)
    open func textInputContextIdentifier_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.textInputContextIdentifier
	}

	// If called while object is first responder, reloads inputView, inputAccessoryView, and textInputMode.  Otherwise ignored.
    @available(iOS 3.2, *)
    open func reloadInputViews_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.reloadInputViews()
	}

}

extension QKC where AA :UIResponder {
    @available(iOS 8.0, *)
    open func userActivity_qk_s(_ userActivity:  NSUserActivity?) -> QKC<AA,YY,ZZ, NSUserActivity?>{
		return link(next: userActivity).then_QK { $0.value.userActivity = userActivity }
	}
    @available(iOS 8.0, *)
    open func userActivity_qk_g() -> QKC<AA,YY,ZZ, NSUserActivity?>{
		 self +^ self.value.userActivity
	}

    @available(iOS 8.0, *)
    open func updateUserActivityState_qk_f(_ activity: NSUserActivity) -> QKC<AA,YY,ZZ, NSUserActivity>{
		 self +^ self.value.updateUserActivityState(activity) +^ activity
	}

    @available(iOS 8.0, *)
    open func restoreUserActivityState_qk_f(_ activity: NSUserActivity) -> QKC<AA,YY,ZZ, NSUserActivity>{
		 self +^ self.value.restoreUserActivityState(activity) +^ activity
	}

}

